package com.victualler.core.base.service;

import com.victualler.core.base.dao.BaseDao;
import com.victualler.core.base.repository.IBaseQueryRepository;
import com.victualler.core.common.dto.PageDto;
import com.victualler.core.common.dto.QueryDto;
import com.victualler.core.base.repository.BaseRepository;


import java.util.List;

 

/**
 * @Author: Guoshichang
 * @Date: Create in 18:00 2018/4/5
 * @Discription:
 */
public interface BaseService<E extends BaseDao,R extends BaseRepository<E,Long>,QR extends IBaseQueryRepository<E,Long>> {
    public List<E> getAll();

    public E getById(Long id);

    public void deleteById(Long id);

    public void delete(E dictDao);

    public void save(E dictDao);

    public void saveAll(List<E> dictDao);

    public long countAllPage();


    public List<E> getAllByPage(int pageNo,boolean isAsc,String... sorts);
    
    /**
     * 根据queryDtoList查询队列的查询条件 , 获取对应的分页结果
     * @param queryDtoList
     * @param pageNo
     * @return
     */
    public List<E> getByQueryList(List<QueryDto> queryDtoList,int pageNo);
    /**
     * 根据查询条件统计总条数
     * @param queryDtoList
     * @return
     */
    public long  countAllPage(List<QueryDto> queryDtoList);
    /**
     * 根据queryDtoList查询队列的查询条件 , 获取对应的所有结果
     * @param queryDtoList
     * @return
     */
    public List<E> getByQueryList(List<QueryDto> queryDtoList);
    
    /**
     * @author Guoshichang   
     * @since 14:58 on 2018/7/7.
     * @param requestDto
     * @Function  根据入参查询对象查询对应的页面
     */
    public PageDto<E> getByRequestDto(Object requestDto , int pageNo,int limit);
}
